patch from Leendert van Doorn <leendert@watson.ibm.com>
Hyperthreading on VMX is broken in the xeno-unstable.bk tree. The diff
below fixes this.
It turns out that the mtrr code clears too many bits, some of them cause
Xen to crash. Being a bit more precise fixes the problem.
/* Save value of CR4 and clear Page Global Enable (bit 7) */
if ( cpu_has_pge ) {
cr4 = read_cr4();
- write_cr4(cr4 & (unsigned char) ~(1 << 7));
+ write_cr4(cr4 & ~X86_CR4_PGE);
}
/* Flush all TLBs via a mov %cr3, %reg; mov %reg, %cr3 */